Gecko's PSX Development Corner
Добро пожаловать на мою страничку, посвященную PlayStation (PSX)!
PSX - это культовая ретро-консоль, появившаяся во времена, когда далеко не каждый PC тянул игры сложнее Дума, и для многих ставшая окном в мир 3D-графики в реальном времени. Всеми фанатами PSX вспоминается с теплотой и ностальгией. Некоторые игры под нее настолько всем полюбились, что в них играют до сих пор - если не на реальной приставке, то на эмуляторах. Появляются новые переводы, хаки и даже homebrew-игры, разработке которых и посвящен этот сайт.
История homebrew (любительского, "домашнего" программирования) для PSX берет свое начало еще в 1997 году, когда вышел Net Yaroze, официальный девкит от Sony для любительской разработки. Его еще называют "черным PSX", поскольку в комплект входила специальная отладочная модель приставки черного цвета, которая подключалась к ПК через последовательный порт для загрузки программ. Net Yaroze стала очень популярной в Японии и породила вокруг себя большое сообщество - некоторые любительские проекты того времени были настолько качественными, что привлекли внимание профессиональных студий. Примером служит Мицуру Камияма, чья ролевая игра Terra Incognita помогла ему устроиться на работу в Square Enix. Однако у "Ярозы" был большой недостаток - полное отсутствие возможности записывать программы на CD. То есть, вся игра, включая машинный код, графику и звуки, должна была полностью умещаться в 2 мегабайта оперативной памяти консоли. При этом около 500 кб "съедал" собственный рантайм Yaroze, так что на игру оставалось и того меньше. Да и цена комплекта в $750 была способна отпугнуть кого угодно.
Со временем сообщество распалось, и сегодня активных Yaroze-программистов уже почти нет. Одно время существовал проект по созданию свободного SDK под PSX, основанного на GNU-тулчейне (MIPS-GCC), но к нему так и не были написаны полноценные библиотеки, и каких-то значимых проектов на этом SDK не появилось.
В какой-то момент в Сети появился легендарный PsyQ - официальный SDK, который в свое время использовался профессиональными студиями для создания коммерческих игр под PSX. Это событие дало homebrew-сообществу новый толчок, однако использовать его я не советую. Сейчас существуют гораздо более приемлемые с юридической точки зрения SDK, о которых см. ниже.
Англоязычным центром сообщества PsyQ является сайт http://psxdev.net.
Я развиваю википроект, посвященный PlayStation. Там вы найдете спецификации аппаратной части консоли и полезную информацию для разработки под нее.
Что нужно для разработки?
- Компьютер с установленным Windows (можно Linux + Wine). Разрядность системы сегодня особого значения не имеет, всем старым инструментам из 90-х есть замены для x86_64
- Собственно SDK. Это, по сути, набор из MIPS-тулчейна и стандартной библиотеки, которая предоставляет высокоуровневый API для работы с графикой, звуком, CD и другими мультимедийными возможностями консоли
- Программа для создания образов дисков. Тут есть из чего выбрать, но я лично рекомендую mkpsxiso от Lameguy64. Также для запуска игр на реальной PlayStation нужна лицензионная информация для патчинга системной зоны в образе диска. Эту информацию можно выдрать из диска с лицензионной игрой, но я этого делать не советую, лучше использовать юридически чистый патчер PSX License Tool
- Утилиты для конвертирования изображений, звуков и моделей. Все это есть на сайте
- Графические и звуковые редакторы. Вполне сгодятся GIMP, Blender и Audacity
- Эмулятор PSX для тестирования игр. Подойдет любой, но если вам нужны отладочные инструменты, то нет ничего лучше DuckStation и no$psx
- Опционально - "живая" PSX и CD-болванки для финальных тестов.
SDK
Retrolang
Свободный SDK и одноименный язык программирования, разработанные мной с полного нуля без зависимости от стороннего ПО. Включает компилятор, ассемблер, дизассемблер, систему автоматизации сборки, собственную стандартную библиотеку и утилиту для конвертации текстур.
PSn00bSDK
Свободный SDK, созданный Джоном Уилбертом Вилламором, известным также как Lameguy64. Один из самых мощных независимых SDK из когда-либо созданных, но, к сожалению, перестал развиваться примерно с 2024 года.Утилиты
cpe2psx (42,4 кб)
Утилита для конвертации исполняемых файлов CPE в PSX.EXE. Есть исходники.
mkpsxiso (40,6 кб)
Утилита для патчинга образов дисков лицензионной информацией, чтобы диск мог запуститься на реальном PSX.
lameguy64 mkpsxiso 1.10 (187,9 кб)
Продвинутая замена mkpsxiso от LameGuy64. Это генератор лицензированных дисковых образов под PSX, позволяющий полностью контролировать структуру диска через описание на XML. В частности, он позволяет вручную задавать физическую очередность файлов на диске (необходимо для оптимизации чтения), а также поддерживает дорожки CD-аудио, которые создаются из обычных WAV-файлов. Выдает файлы ISO или CUE+BIN. Очень полезная и удобная в использовании программа, незаменимый инструмент для сложных проектов. https://github.com/Lameguy64/mkpsxiso
img2tim-0.60 (1,3 Мб)
Утилита для конвертации изображений в формат TIM.
VAG Tools (28,8 кб)
Утилиты wav2vag и vag2wav для конвертации, соответственно, WAV в VAG и наоборот. Исходники включены.
TMD Tools.zip (50,5 кб)
Набор инструментов для создания RSD и TMD (файлов моделей PSX). Включает скрипт-экспортер RSD для Blender 2.69 и утилиту RSDLINK для компиляции RSD в TMD.Эмуляторы
PCSX ReARMed
Один из самых старых и проверенных временем эмуляторов. Форк PCSX Reloaded (который, в свою очередь, был форком PCSX-df, а тот форком PCSX - такая вот у этого проекта длинная родословная). Существует также в виде libretro-ядра, доступен в RetroArch. У меня почему-то ядро из репозитория RetroArch глючит с некоторыми играми, так что выкладываю версию, которую использую сам.
no$psx
no$psx (или nocashpsx) - эмулятор PSX для разработчиков. Включает встроенный отладчик, профайлер, просмотровщик RAM и VRAM, дизассемблер и TTY-вывод. Не требует установки плагинов, содержит собственную версию BIOS (но можно установить и оригинальную). Очень крутая штука.
DuckStation
Быстрый и функциональный эмулятор с удобным интерфейсом на основе Qt. Поддерживает аппаратное ускорение с использованием различных графических API, постпроцессинг и много чего еще. К сожалению, при всех своих достоинствах, распространяется по несвободной лицензии CC BY-NC-ND.Документация
Playstation Emulation Guide (1,0 Мб)
Руководство по эмуляции CPU и GPU. Подробное описание всех инструкций, регистров, портов, команд GPU и т.д. Ваша настольная книга, если вы хотите досконально разобраться в работе R3000 на самом низком уровне. Следуя этому руководству, вы сможете написать базовый эмулятор, который частично сможет выполнить код BIOS и даже нарисовать графику на экране. Референсную реализацию эмулятора на Rust по этому руководству см. тут: https://gitlab.com/flio/rustation-ng/
Everything You Have Always Wanted to Know about the Playstation But Were Afraid to Ask (400 Кб)
Компиляция доков от Джошуа Уокера. Содержит описание CPU, RAM, DMA, GPU, GTE, SPU, CD-ROM, таймеров, контроллеров, карт памяти. Обязательно иметь на диске в качестве справочника!
Nocash PSX-SPX Specifications
Хрестоматийный док от автора no$psx, представляет собой большой HTML-документ. Содержит информацию по RAM, I/O портам, GPU, GTE, MDEC, SPU, прерываниям, DMA, таймерам, CD-ROM, контроллерам, картам памяти и т.д.
LameGuy64 Tutorials
Цикл вводных уроков от LameGuy64. Охватывают основы PsyQ SDK, рисование примитивов, работу с текстурами и CLUT, контроллером и CD-ROM.Ссылки
Сайт Lameguy64
Разработки Lameguy64: PSn00bSDK, mkpsxiso, img2tim и др.